// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.google.gson.internal; import com.google.gson.InstanceCreator; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Constructor; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Collection; import java.util.EnumSet; import java.util.Map; import java.util.Queue; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; // Referenced classes of package com.google.gson.internal: // i, j, k, l, // m, n, o, e, // f, g, d, h, // ObjectConstructor public final class ConstructorConstructor { private final Map a; public ConstructorConstructor(Map map) { a = map; } private ObjectConstructor a(Class class1) { i i1; try { Constructor constructor = class1.getDeclaredConstructor(new Class[0]); if (!constructor.isAccessible()) { constructor.setAccessible(true); } i1 = new i(this, constructor); } catch (NoSuchMethodException nosuchmethodexception) { return null; } return i1; } private ObjectConstructor a(Type type, Class class1) { if (java/util/Collection.isAssignableFrom(class1)) { if (java/util/SortedSet.isAssignableFrom(class1)) { return new j(this); } if (java/util/EnumSet.isAssignableFrom(class1)) { return new k(this, type); } if (java/util/Set.isAssignableFrom(class1)) { return new l(this); } if (java/util/Queue.isAssignableFrom(class1)) { return new m(this); } else { return new n(this); } } if (java/util/Map.isAssignableFrom(class1)) { if (java/util/SortedMap.isAssignableFrom(class1)) { return new o(this); } if ((type instanceof ParameterizedType) && !java/lang/String.isAssignableFrom(TypeToken.get(((ParameterizedType)type).getActualTypeArguments()[0]).getRawType())) { return new e(this); } else { return new f(this); } } else { return null; } } private ObjectConstructor b(Type type, Class class1) { return new g(this, class1, type); } public ObjectConstructor get(TypeToken typetoken) { Type type = typetoken.getType(); Class class1 = typetoken.getRawType(); InstanceCreator instancecreator = (InstanceCreator)a.get(type); Object obj; if (instancecreator != null) { obj = new d(this, instancecreator, type); } else { InstanceCreator instancecreator1 = (InstanceCreator)a.get(class1); if (instancecreator1 != null) { return new h(this, instancecreator1, type); } obj = a(class1); if (obj == null) { obj = a(type, class1); if (obj == null) { return b(type, class1); } } } return ((ObjectConstructor) (obj)); } public String toString() { return a.toString(); } }